package com.practice.ajCollections010.map.hashtable;

import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;

/**
 * Hashtable 插入元素:
 *                     1. 可以保存任何 k-v 为非 null 的对象；
 *                     2. k 时唯一的，k 相同时更新 k 所映射的值；
 *                     3. 不同 k 可以保存相同的 value；
 *                     4. 添加元素的方法都是被 synchronized 关键字修饰的可以看做时线程同步的；
 */
public class AddElement {
    public static void main(String[] args) {
        Hashtable<String, String> hashtable = new Hashtable<>(10);
        hashtable.put("hello", "hello");
        hashtable.put("world", "hello");
        hashtable.put("world", "world");
        hashtable.putIfAbsent("Mr", "yang");

        Map<String, String> map = new HashMap<>(10);
        map.put("name", "dejun");
//        map.put(null, "null");
//        map.put("null", null);
        hashtable.putAll(map); // 使用 hashtable 的 putAll 方法时 key 和 value 都不能包含 null 否则会报 NPE 异常

//        hashtable.put(null, "null value");
//        hashtable.put("null", null);
        hashtable.forEach((K, V) -> {
            //do something
            System.out.println(K + ": " + V);
        });
    }
}
